/*
 * Copyright (c) 2020-2021 Tero Hänninen.
 * SPDX-License-Identifier: BSD-2-Clause
 */

module aggs;
module blocks;
module casts;
module cte;
module enums;
module functions;
module globals;
module impa;
module impb;
module impc;
module impd;
module labels;
module macros;
module macros_aux;
module numeric;
module scopestmt;
module typeexpr;
module typeinfo;
module util;
module vararg;

import self.aggs <- void;
import self.blocks <- void;
import self.casts <- void;
import self.cte <- void;
import self.enums <- void;
import self.functions <- void;
import self.globals <- void;
import self.labels <- void;
import self.macros <- void;
import self.numeric <- void;
import self.scopestmt <- void;
import self.typeexpr <- void;
import self.typeinfo <- void;
import self.vararg <- void;

define RUN = main_cte();

int main()
{
    main_cte();
    blocks();
    globals_no_cte();
    scope_statements_no_cte();
    return 0;
}

int main_cte()
{
    aggs();
    casts();
    cte_initialized_values();
    enums();
    functions();
    globals_cte();
    labels();
    macros();
    numeric();
    scope_statements();
    type_expressions();
    typeinfo();
    varargs();
    return 0;
}
